[iOS 10] SpriteKit の Tile Map をつかってミニゲームをつくってみた #1
ゲームの仕様
こんなゲームを作ります。
ざっくり仕様はこんな感じ。よくある氷の床のやつです。
フリック処理をつくる
では、さっそく作っていきます。
今回はフリックを GameScene.m でハンドリングするところまで作ります。
まず、プロジェクトとタイルマップを作ります。
[iOS 10] SpriteKit の Tile Map をさわってみた #1 が、このまま使えます。というか、このためのブログでした。
次に GameScene.h と GameScene.m にフリックを受け取るメソッドを作ります。
#import <SpriteKit/SpriteKit.h> typedef NS_ENUM(NSInteger, CMSSwipe) { CMSSwipeUp, CMSSwipeDown, CMSSwipeLeft, CMSSwipeRight, }; @interface GameScene : SKScene - (void)swipe:(CMSSwipe)swipe; @end
- (void)swipe:(CMSSwipe)swipe { // ここにフリック処理を書く。 }
次に、Main.storyboard 上の GameViewController に Swipe Gesture Recognizer を4つ追加します。
追加したジェスチャーをそれぞれ上下左右に設定します。
GameViewController.m で、scene を取得しておきます。
@implementation GameViewController { GameScene *_scene; } - (void)viewDidLoad { [super viewDidLoad]; // Load the SKScene from 'GameScene.sks' GameScene *scene = (GameScene *)[SKScene nodeWithFileNamed:@"GameScene"]; // Set the scale mode to scale to fit the window scene.scaleMode = SKSceneScaleModeAspectFill; SKView *skView = (SKView *)self.view; // Present the scene [skView presentScene:scene]; skView.showsFPS = YES; skView.showsNodeCount = YES; _scene = scene; }
次に GameViewController.m にアクションメソッドを新規追加して、画面から設定します。
- (IBAction)upGestureDidAction:(id)sender { [_scene swipe:CMSSwipeUp]; } - (IBAction)downGestureDidAction:(id)sender { [_scene swipe:CMSSwipeDown]; } - (IBAction)leftGestureDidAction:(id)sender { [_scene swipe:CMSSwipeLeft]; } - (IBAction)rightGestureDidAction:(id)sender { [_scene swipe:CMSSwipeRight]; }
ホントは、フリックを SpriteKit の GameScene の部分で解決したかったのですが、 ゴニョゴニョして試した結果けっこう厄介だったので、簡単でちょっと強引な方法でフリック処理を作りました。次回へ続く。
ではでは。